JS 继承

javascript 继承

1、通过 apply 改变 this 的指向来实现

1
2
3
4
5
6
7
8
9
10
11
12
function Persion(name, age, fn) {
this.name = name;
this.age = age;
}
var p1 = new Persion('小洛',12);
console.log(p1.name + p1.age); // 小洛12

function Per(){
Persion.apply(this, arguments);
};
var p2 = new Per('小花',11);
console.log(p2.name + p2.age); // 小花11

2、用 apply 实现继承,那么 B 继承 A,如何在 B 里面重写 A 的方法?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function Persion(name, age, fn) {
this.name = name;
this.age = age;
this.fn = fn || function () {
console.log('我是 Persion 的方法 ');
}
}
var p1 = new Persion('小洛', 12);
p1.fn(); // 我是 Persion 的方法

function Per() {
Persion.apply(this, arguments);
};
var p2 = new Per('小花', 11, () => console.log('我是 Per 的方法'));
p2.fn(); //我是 Per 的方法

3、使用原型置换

将那些想被继承出去的方法放在原型中,然后直接将对象的原型给替换掉,因为一个对象查找一个属性的时候,如果它本身没有这个属性,那么它就会到原型上去查找。

1
2
3
4
5
6
7
8
9
function Persion() {}
Persion.prototype.fn = ()=> console.log('我是 Persion 的方法');
var p1 = new Persion();
p1.fn(); // 我是 Persion 的方法

function Per() {}
Per.prototype = Persion.prototype;
var p2 = new Per();
p2.fn(); // 我是 Persion 的方法
本文结束,感谢您的阅读